TOP

SQL TOP, LIMIT, FETCH FIRST e ROWNUM

SQL SELECT TOP Descrição

A expressão SELECT TOP é usada para especificar o número de registros a serem selecionados.

SQL SELECT TOP é útil para tabelas grandes com milhares de registros, pois o retorno de um grande número de registros pode afetar o desempenho do sistema.


Nem todos os sistemas de banco de dados suportam a expressão SELECT TOP. MySQL suporta a expressão LIMIT para selecionar um número limitado de registros, enquanto Oracle usa FETCH FIRST n ROWS ONLY e ROWNUM.

SQL Server / MS Access Sintaxe:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition

MySQL Sintaxe:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 Sintaxe:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY

Sintaxe Oracle obsoleta:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

Sintaxe Oracle obsoleta (com ORDER BY):

SELECT *
FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))
WHERE ROWNUM <= number

Banco de dados de demonstração

A seguir está um exemplo da tabela "Customers" ("Clientes") do banco de dados "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL TOP, LIMIT e FETCH FIRST Exemplos

A instrução SQL a seguir seleciona os três primeiros registros da tabela "Customers" (para SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers

A instrução SQL a seguir mostra um exemplo equivalente para MySQL:

Run SQLSELECT * 
FROM Customers 
LIMIT 3

A instrução SQL a seguir mostra um exemplo equivalente para Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

SQL TOP PERCENT Exemplo

A instrução SQL a seguir seleciona os primeiros 50% dos registros da tabela "Customers" (para SQL Server/MS Access):

SELECT TOP 50 PERCENT * 
FROM Customers

A instrução SQL a seguir mostra um exemplo equivalente para Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

Usando a expressão WHERE

A instrução SQL a seguir seleciona os três primeiros registros da tabela "Customers" onde o país é "Germany" (para SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers 
WHERE Country = 'Germany'

A instrução SQL a seguir mostra um exemplo equivalente para MySQL:

Run SQLSELECT * 
FROM Customers 
WHERE Country = 'Germany' 
LIMIT 3

A instrução SQL a seguir mostra um exemplo equivalente para Oracle:

SELECT * 
FROM Customers 
WHERE Country = 'Germany' 
FETCH FIRST 3 ROWS ONLY